require 'unrealdb'

db = UnrealDB.new
db.create

arq = File.open("leve", "rb")
doc = arq.read
arq.close

#if !db.put(doc, "chave7")
#  puts "Erro inserindo arquivo!!!"
#  db.stop
#else
#  puts "Sucesso ao inserir arquivo."
#end

#doc = db.get("chave7")
#if doc == nil
#  puts "Erro ao buscar arquivo"
#else
#  puts "Sucesso ao buscar arquivo"
#end

#if !db.remove("chave7")
#  puts "Erro ao remover arquivo"
#else
#  puts "Sucesso ao remover arquivo"
#end

puts "\n"
puts 'Pressione x para sair.'
puts 'Pressione i para inserir'
puts 'Pressione d para deletar'
puts 'Pressione b para buscar'
puts 'Pressione f para buscar de forma personalizada'
puts 'Pressione p para imprimir as informacoes de cada vnode do chord'
puts "\n"

inserted_stack = []
counter = 0

while true
  text = gets

  if text == "x\n"
    db.stop
    break
  end

  if text == "i\n"
    key = "neuton" + counter.to_s
    inserted_stack.push(key)
    counter += 1
    if !db.put(doc, inserted_stack.last)
      puts "Erro inserindo arquivo de chave: " + key
    else
      puts "Sucesso ao inserir arquivo de chave: " + key
    end
  end

  if text == "d\n"
    key = inserted_stack.pop
    if !db.remove(key)
      puts "Erro removendo arquivo de chave: " + key
    else
      puts "Sucesso remover arquivo de chave: " + key
    end
  end

  if text == "b\n"
    if inserted_stack.last != nil
      if !db.get(inserted_stack.last)
        puts "Erro ao buscar arquivo de chave: " + inserted_stack.last
      else
        puts "Sucesso ao buscar arquivo de chave: " + inserted_stack.last
      end
    end
  end

  if text == "f\n"
    puts "Digite o nome a ser buscado: "
    name = gets
    name = name.strip
    if !db.get(name)
      puts "Erro ao buscar arquivo de chave: " + name
    else
      puts "Sucesso ao buscar arquivo de chave: " + name
    end
  end

  if text == "p\n"
    db.print_nodes
  end

  puts '--------------------------------------------------------'
  puts "\n"
  puts 'Pressione x para sair.'
  puts 'Pressione i para inserir'
  puts 'Pressione d para deletar'
  puts 'Pressione b para buscar'
  puts 'Pressione f para buscar de forma personalizada'
  puts 'Pressione p para imprimir as informacoes de cada vnode do chord'
  puts "\n"
end
